#define _CRT_SECURE_NO_WARNINGS 1

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

string add_b(string& res, string& s)
{
	string tmp;
	ll it_s = s.size()-1;
	ll it_res = res.size()-1;
	int cnt = 0;

	while (it_s != -1 && it_res != -1)
	{
		int k = (res[it_res--] - '0')+(s[it_s--]-'0')+cnt;
		tmp = char((k % 10) + '0') + tmp;
		cnt = k / 10;
	}

	while (it_s != -1)
	{
		int k = (s[it_s--] - '0') + cnt;
		tmp = char((k % 10) + '0') + tmp;
		cnt = k / 10;
	}

	while (it_res != -1)
	{
		int k = (res[it_res--] - '0') + cnt;
		tmp = char((k % 10) + '0') + tmp;
		cnt = k / 10;
	}
	if (cnt)
		tmp = char(cnt + '0') + tmp;

	return tmp;
}

string add_e(string& res, string& s,int* flag)
{
	string tmp;
	ll it_s = s.size() - 1;
	ll it_res = res.size() - 1;
	int cnt = 0;

	while (it_s != it_res )
	{
		if (it_s > it_res)
		{
			int k = (s[it_s--] - '0') + cnt;
			tmp = char((k % 10) + '0') + tmp;
			cnt = k / 10;
		}
		else
		{
			int k = (res[it_res--] - '0') + cnt;
			tmp = char((k % 10) + '0') + tmp;
			cnt = k / 10;
		}
	}
	while (it_s != -1)
	{
		int k = (res[it_res--] - '0') + (s[it_s--] - '0') + cnt;
		tmp = char((k % 10) + '0') + tmp;
		cnt = k / 10;
	}
	if (cnt)
		*flag = 1;

	return tmp;
}

int main()
{
	string s;
	ll n;
	string one("1");
	cin >> n >> s;
	string res = s;
	while (n--)
	{
		int n1 = res.find('.');
		int flag = 0;
		string res_b(res.begin(), res.begin() + n1);
		string res_e(res.begin()+n1+1, res.end());
		string tmp_b = add_b(res_b, res_b);
		string tmp_e = add_e(res_e, res_e,&flag);
		if (flag)
			tmp_b = add_b(tmp_b, one);
		res = tmp_b + "." + tmp_e;
	}
	int n1 = res.find('.');
	string ans(res.begin(), res.begin() + n1);
	if (res[n1 + 1] >= '5')
		ans = add_b(ans, one);

	cout << ans;

	return 0;
}